Time-based synchronized activation of configuration updates in network devices

ABSTRACT

A network device may receive configuration information with a first command and a second command and may generate a data structure based on the first command. The network device may store files of the configuration information in the data structure based on the first command and may activate the files stored in the data structure, to configure the network device, based on a timestamp or a time period specified in the second command.

BACKGROUND

A network management system may provide an application (e.g., aconfiguration application) to a network device in order to update aconfiguration of the network device. The network device may save theconfiguration application using a model (e.g., a configuration commitmodel) that modifies the configuration application, if necessary, andcommits the configuration application to the network device.

SUMMARY

Some implementations described herein relate to a method. The method mayinclude receiving configuration information with a first command and asecond command and generating a data structure based on the firstcommand. The method may include storing files of the configurationinformation in the data structure based on the first command andactivating the files stored in the data structure, to configure anetwork device, based on a timestamp or a time period specified in thesecond command.

Some implementations described herein relate to a network device. Thenetwork device may include one or more memories and one or moreprocessors. The one or more processors may be configured to receiveconfiguration information with a first command and a second command andgenerate a data structure based on the first command. The one or moreprocessors may be configured to store files for the configuration updatein the data structure based on the first command and activate the filesstored in the data structure based on a timestamp or a time periodspecified in the second command. The one or more processors may beconfigured to perform one or more actions, based on the second command,after activating the files stored in the data structure.

Some implementations described herein relate to a non-transitorycomputer-readable medium that stores a set of instructions for a networkdevice. The set of instructions, when executed by one or more processorsof the network device, may cause the network device to receive anapplication with a first command and a second command and determinewhether one or more errors are present in the application. The set ofinstructions, when executed by one or more processors of the networkdevice, may cause the network device to provide, to a networkadministrator associated with the network device, a message identifyingthe one or more errors when the one or more errors are present in theapplication. The set of instructions, when executed by one or moreprocessors of the network device, may cause the network device to storefiles of the application in a data structure based on the first commandand when the one or more errors are not present in the application. Theset of instructions, when executed by one or more processors of thenetwork device, may cause the network device to activate the filesstored in the data structure based on a timestamp or a time periodspecified in the second command.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1A-1F are diagrams of an example associated with providingtime-based synchronized activation of configuration updates in networkdevices.

FIG. 2 is a diagram of an example environment in which systems and/ormethods described herein may be implemented.

FIGS. 3 and 4 are diagrams of example components of one or more devicesof FIG. 2 .

FIG. 5 is a flowchart of an example process associated with providingtime-based synchronized activation of configuration updates in networkdevices.

DETAILED DESCRIPTION

The following detailed description of example implementations refers tothe accompanying drawings. The same reference numbers in differentdrawings may identify the same or similar elements.

Installing an application (e.g., a configuration application) on anetwork device includes a two-step process. In a first step, known as apreparation step, the configuration installation is validated and a newdata structure (e.g., a database that could become an executing databasein the future) and configuration files are generated and stored in thedata structure. In a second step, known as an activation step, thepreviously generated configuration files are activated and become acurrent, operational device configuration. This enables theconfiguration to be installed on several network devices, and theconfiguration can be activated simultaneously on the network devices ata later point in time. The purpose of decoupling the steps is to providea definitive time window for the configuration to be effective on allnetwork devices. Thus, activating the configuration requires providingan activate command, at a later time, to all network devices thatreceived the configuration. However, the activate command may not bereceived by one or more of the network devices and the configuration maynot be activated on such network devices.

Thus, current techniques for providing and activating an application fornetwork devices consume computing resources (e.g., processing resources,memory resources, communication resources, and/or the like), networkingresources, and/or the like that are associated with unnecessarilyincreasing network traffic with separate activation commands, failing tosend activation commands, the network devices not receiving theactivation commands due to packet loss issues in a network, discoveringthat an activation command was not received, resending the activationcommand that was not received and re-confirming that the activationcommand was properly received, and/or the like.

Some implementations described herein relate to a network device thatprovides time-based synchronized activation of configuration updates.For example, the network device may receive configuration informationwith a first command (e.g., a prepare command) and a second command(e.g., an activate command) and may generate a data structure based onthe first command. The network device may store files of theconfiguration information in the data structure based on the firstcommand and may activate the files stored in the data structure, toconfigure the network device, based on a timestamp or a time periodspecified in the second command.

In this way, the network device provides time-based synchronizedactivation of configuration updates. The network device may utilize atimestamp or a time period provided with an application to determinewhen to activate the application. This may simplify installation of theapplication so that an activate command need not be provided at a laterpoint in time. Utilization of the timestamp or the time period mayreduce network traffic, and may cause activation of the application evenwhen the network device fails to receive an activate command from anetwork management system or due to packet loss issues in the network.Since the intelligence is within the network device, the activation doesnot depend on network conditions. Thus, the network device conservescomputing resources, networking resources, and/or the like that wouldotherwise have been consumed by unnecessarily increasing network trafficwith separate activation commands, failing to send activation commands,the network devices not receiving the activation commands due to packetloss issues in a network, discovering that an activation command was notreceived, resending the activation command that was not received andre-confirming that the activation command was properly received, and/orthe like.

FIGS. 1A-1F are diagrams of an example 100 associated with providingtime-based synchronized activation of configuration updates in networkdevices. As shown in FIGS. 1A-1F, example 100 includes an endpointdevice, a network of network devices, and a network management system(NMS). Further details of the endpoint device, the network, the networkdevices, and the network management system are provided elsewhereherein.

As shown in FIG. 1A, and by reference number 105, the network device mayreceive, from the network management system, configuration informationwith a first command and a second command. For example, the networkdevice may receive a configuration application from the networkmanagement system. The configuration application may include anapplication that updates a configuration of the network device.

The first command may include a prepare command with instructions toperform a preparation step. The instructions to perform the preparationstep may include instructions to validate the configurationinstallation, instructions to generate a new data structure (e.g., adatabase that could become an executing database in the future), andinstructions to generate configuration files and store the configurationfiles in the data structure. In one example, the first command mayinclude the syntax to perform the preparation step (e.g., user@router #comma prepare).

The second command may include an activate command with instructions toperform an activation step. The instructions to perform the activationstep may include instructions to activate the previously generatedconfiguration files (e.g., stored in the data structure) so that theconfiguration files become a current, operational device configurationfor the network device. In some implementations, the second command mayinclude syntax identifying a time (e.g., user@router # commit activateat 09:30 PM) to activate the configuration files, syntax identifying atime period (e.g., user@router # commit activate in 60 min) to activatethe configuration files, syntax identifying one or more actions toperform (e.g., user@router # commit activate | send-mail touser@company.com) when activating or after activating the configurationfiles, syntax identifying a time and one or more actions to perform(e.g., user@router # commit activate at 09:30 PM | send-mail touser@company.com) when activating the configuration files, syntaxidentifying a time period and one or more actions to perform (e.g.,user@router # commit activate in 60 min | send-mail to user@company.com)when activating the configuration files, and/or the like.

In some implementations, the first command and the second command may becombined to form a combined command. The combined command may include aprepare command with instructions to perform a preparation step and anactivate command with instructions to perform an activation step. Theinstructions to perform the preparation step and the activation step mayinclude instructions to validate the configuration installation,instructions to generate the new data structure, instructions togenerate configuration files and store the configuration files in thedata structure, and instructions to activate the previously generatedconfiguration files (e.g., stored in the data structure) so that theconfiguration files become a current, operational device configurationfor the network device. In some implementations, the combined commandmay include syntax to perform the preparation step and to identify atime (e.g., user@router # commit prepare and activate at 09:30 PM) toactivate the configuration files, syntax to perform the preparation stepand to identify a time period (e.g., user@router # commit prepare andactivate in 60 min) to activate the configuration files, syntax toperform the preparation step and to identify one or more actions toperform (e.g., user@router # commit prepare and activate | send-mail touser@company.com) when activating or after activating the configurationfiles, syntax to perform the preparation step and to identify a time andone or more actions to perform (e.g., user@router # commit prepare andactivate at 09:30 PM | send-mail to user@company.com) when activatingthe configuration files, syntax to perform the preparation step and toidentify a time period and one or more actions to perform (e.g.,user@router # commit prepare and activate in 60 min | send-mail touser@company.com) when activating the configuration files, and/or thelike.

As shown in FIG. 1B, and by reference number 110, the network device maygenerate a data structure (e.g., a database, a tree, a list, and/or thelike) and may store files of the configuration information in the datastructure based on the first command. For example, the network devicemay execute the instructions of the first command to perform thepreparation step. Execution of the instructions to perform thepreparation step may cause the network device to execute theinstructions to generate the data structure, which may cause the networkdevice to generate the data structure. Execution of the instructions toperform the preparation step may also cause the network device toexecute the instructions to generate configuration files and store theconfiguration files in the data structure, which may cause the networkdevice to store the files of the configuration information in the datastructure.

As shown in FIG. 1C, and by reference number 115, the network device maydetermine whether one or more errors occur based on generating the datastructure and storing the files of the configuration information in thedata structure. For example, execution of the instructions to performthe preparation step may cause the network device to execute theinstructions to validate the configuration installation, which may causethe network device to determine whether one or more errors occur basedon generating the data structure and storing the files of theconfiguration information in the data structure.

Alternatively, the network device may determine whether one or moreerrors are present in the configuration information, and may refrainfrom generating the data structure and storing the files of theconfiguration information in the data structure when one or more errorsare present in the configuration information. In such implementations,the network device may also provide, to a network administratorassociated with the network device, a message identifying the one ormore errors when the one or more errors are present in the configurationinformation.

As further shown in FIG. 1C, and by reference number 120, the networkdevice may cause the one or more errors to be corrected. For example,the network device may determine that the one or more errors are presentin one or more of the files of the configuration information. Thenetwork device may correct the one or more errors present in the one ormore files of the configuration information to generate corrected filesof the configuration information. The network device may store thecorrected files of the configuration information in the data structurealong with files of the configuration information without the one ormore errors.

As shown in FIG. 1D, and by reference number 125, the network device mayactivate the files stored in the data structure, to configure thenetwork device, based on a timestamp or a time period specified in thesecond command. For example, the network device may execute theinstructions of the second command to perform the activation step.Execution of the instructions to perform the activation step may causethe network device to execute the instructions to activate thepreviously generated files (e.g., stored in the data structure) so thatthe files become a current, operational device configuration for thenetwork device based on the timestamp or the time period, which maycause the network device to activate the files stored in the datastructure and to configure the network device, at the time specified bythe timestamp or after the time period expires.

As shown in FIG. 1E, and by reference number 130, the network device mayperform one or more actions, based on the second command, afteractivating the files stored in the data structure. For example, thenetwork device may execute the instructions of the second command toperform the activation step. Execution of the instructions to performthe activation step may cause the network device to execute theinstructions to perform the one or more actions after activating thefiles stored in the data structure.

In some implementations, the one or more actions include the networkdevice providing, to a network administrator associated with the networkdevice, an email indicating that the files are activated, a text messageindicating that the files are activated, a voice message indicating thatthe files are activated, and/or the like. For example, the networkdevice may provide the email, the text message, and/or the voicemessage, indicating that the files are activated, to a device (e.g., asmartphone, a tablet, and/or the like) associated with the networkadministrator. Although implementations described herein relate toproviding the configuration information to a single network device, insome implementations the configuration information may be provided to aplurality of network devices so that the plurality of network devicesmay be configured at the same time (e.g., as specified in the timestampor the time period of the second command). In this way, the networkdevice or the plurality of network devices may notify the networkadministrator that the configuration of the network device or theplurality of network devices is complete and successful. This mayconserve computing resources, networking resources, and/or the like thatwould otherwise have been consumed by unnecessarily increasing networktraffic with a separate activation command, failing to send anactivation command, the network device not receiving the activationcommand due to packet loss issues in a network, and/or the like.

In some implementations, the one or more actions include the networkdevice rebooting the network device to enable a configuration update.For example, after activating the files stored in the data structure,the network device may reboot to enable a configuration update of thenetwork device based on the configuration information. In this way, thenetwork device may conserve computing resources, networking resources,and/or the like that would otherwise have been consumed by unnecessarilyincreasing network traffic with a separate activation command, failingto send an activation command, the network device not receiving theactivation command due to packet loss issues in a network, discoveringthat an activation command was not received, and/or the like.

In some implementations, the one or more actions include the networkdevice informing the network management system that the configurationupdate succeeded or failed. For example, after activating the filesstored in the data structure, the network device may update aconfiguration of the network device based on the activated files. Thenetwork device may determine whether the configuration update succeededor failed and may provide a message, to the network management system,indicating whether the configuration update succeeded or failed. If theconfiguration update failed, the network management system may modifythe configuration information (e.g., to correct any errors) and mayprovide the modified configuration information to the network device forinstallation. In this way, the network device may conserve computingresources, networking resources, and/or the like that would otherwisehave been consumed by unnecessarily increasing network traffic with aseparate activation command, discovering that an activation command wasnot received, resending the activation command that was not received andre-confirming that the activation command was properly received, and/orthe like.

In some implementations, the one or more actions include the networkdevice informing another network device that the network device hasperformed the configuration update or will go offline to reboot. Forexample, after activating the files stored in the data structure, thenetwork device may update a configuration of the network device based onthe activated files and may need to reboot for the updated configurationto be implemented. The network device may provide a message, to anothernetwork device, indicating that the network device updated theconfiguration or will go offline to reboot for the updated configurationto be implemented. In this way, the network device may conservecomputing resources, networking resources, and/or the like that wouldotherwise have been consumed by losing network traffic generated by theother network device and destined for the offline network device,unnecessarily increasing network traffic with a separate activationcommand, discovering that an activation command was not received, and/orthe like.

FIG. 1F is a diagram depicting alternative forms of the first command(e.g., a prepare command) and the second command (e.g., an activatecommand). As shown, the prepare command may be a separate command andmay include the syntax user@router # commit prepare and successfullyprepared commit. The activate command may be a separate command with atimestamp and may include the syntax user@router # commit activate at09:30 PM and successfully scheduled commit activate. The activatecommand may be a separate command with a time period and may include thesyntax user@router # commit activate in 60 min and successfullyscheduled commit activate. The activate command may be a separatecommand with a timestamp and an action to perform and may include thesyntax user@router # commit activate at 09:30 PM | Send email touser@company.com and successfully scheduled commit activate. Theactivate command may be a separate command with a time period and anaction to perform and may include the syntax user@router # commitactivate in 60 min | Send email to user@company.com and successfullyscheduled commit activate.

As further shown, the prepare command and the activate command may be acombined command with a timestamp and may include the syntax user@router# commit prepare and activate at 09:30 PM and successfully preparedcommit and scheduled commit activate. The prepare command and theactivate command may be a combined command with a time period and mayinclude the syntax user@router # commit prepare and activate in 60 minand successfully prepared commit and scheduled commit activate. Theprepare command and the activate command may be a combined command witha timestamp and an action to perform and may include the syntaxuser@router # commit prepare and activate at 09:30 PM | Send email touser@company.com and successfully prepared commit and scheduled commitactivate. The prepare command and the activate command may be a combinedcommand with a time period and an action to perform and may include thesyntax user@router # commit prepare and activate in 60 min Send email touser@company.com and successfully prepared commit and scheduled commitactivate.

In this way, the network device provides time-based synchronizedactivation of configuration updates. The network device may utilize atimestamp or a time period provided with an application to determinewhen to activate the application. This may simplify installation of theapplication so that an activate command need not be provided at a laterpoint in time. Utilization of the timestamp or the time period mayreduce network traffic, and may cause activation of the application evenwhen the network device fails to receive an activate command from anetwork management system or due to packet loss issues in the network.Since the intelligence is within the network device, the activation doesnot depend on network conditions. Thus, the network device conservescomputing resources, networking resources, and/or the like that wouldotherwise have been consumed by unnecessarily increasing network trafficwith separate activation commands, failing to send activation commands,the network devices not receiving the activation commands due to packetloss issues in a network, discovering that an activation command was notreceived, resending the activation command that was not received andre-confirming that the activation command was properly received, and/orthe like.

As indicated above, FIGS. 1A-1F are provided as an example. Otherexamples may differ from what is described with regard to FIGS. 1A-1F.The number and arrangement of devices shown in FIGS. 1A-1F are providedas an example. In practice, there may be additional devices, fewerdevices, different devices, or differently arranged devices than thoseshown in FIGS. 1A-1F. Furthermore, two or more devices shown in FIGS.1A-1F may be implemented within a single device, or a single deviceshown in FIGS. 1A-1F may be implemented as multiple, distributeddevices. Additionally, or alternatively, a set of devices (e.g., one ormore devices) shown in FIGS. 1A-1F may perform one or more functionsdescribed as being performed by another set of devices shown in FIGS.1A-1F.

FIG. 2 is a diagram of an example environment 200 in which systemsand/or methods described herein may be implemented. As shown in FIG. 2 ,environment 200 may include an endpoint device 210, a group of networkdevices 220 (shown as network device 220-1 through network device220-N), a network management system 230, and a network 240. Devices ofthe environment 200 may interconnect via wired connections, wirelessconnections, or a combination of wired and wireless connections.

The endpoint device 210 includes one or more devices capable ofreceiving, generating, storing, processing, and/or providinginformation, such as information described herein. For example, theendpoint device 210 may include a mobile phone (e.g., a smart phone or aradiotelephone), a laptop computer, a tablet computer, a desktopcomputer, a handheld computer, a gaming device, a wearable communicationdevice (e.g., a smart watch, a pair of smart glasses, a heart ratemonitor, a fitness tracker, smart clothing, smart jewelry, or a headmounted display), a network device, or a similar type of device. In someimplementations, the endpoint device 210 may receive network trafficfrom and/or may provide network traffic to other endpoint devices 210and/or the network management system 230, via the network 240 (e.g., byrouting packets using the network devices 220 as intermediaries).

The network device 220 includes one or more devices capable ofreceiving, processing, storing, routing, and/or providing traffic (e.g.,a packet or other information or metadata) in a manner described herein.For example, the network device 220 may include a router, such as alabel switching router (LSR), a label edge router (LER), an ingressrouter, an egress router, a provider router (e.g., a provider edgerouter or a provider core router), a virtual router, or another type ofrouter. Additionally, or alternatively, the network device 220 mayinclude a gateway, a switch, a firewall, a hub, a bridge, a reverseproxy, a server (e.g., a proxy server, a cloud server, or a data centerserver), a load balancer, and/or a similar device. In someimplementations, the network device 220 may be a physical deviceimplemented within a housing, such as a chassis. In someimplementations, the network device 220 may be a virtual deviceimplemented by one or more computer devices of a cloud computingenvironment or a data center. In some implementations, a group ofnetwork devices 220 may be a group of data center nodes that are used toroute traffic flow through the network 240.

The network management system 230 includes one or more devices capableof receiving, generating, storing, processing, and/or providinginformation, such as information described herein. For example, thenetwork management system 230 may include a laptop computer, a tabletcomputer, a desktop computer, a group of server devices, or a similartype of device, associated with multicast traffic. In someimplementations, the network management system 230 may receiveinformation from and/or transmit information (e.g., multicast traffic)to the endpoint device 210, via the network 240 (e.g., by routingpackets using the network devices 220 as intermediaries).

The network 240 includes one or more wired and/or wireless networks. Forexample, the network 240 may include a packet switched network, acellular network (e.g., a fifth generation (5G) network, a fourthgeneration (4G) network, such as a long-term evolution (LTE) network, athird generation (3G) network, a code division multiple access (CDMA)network, a public land mobile network (PLMN), a local area network(LAN), a wide area network (WAN), a metropolitan area network (MAN), atelephone network (e.g., the Public Switched Telephone Network (PSTN)),a private network, an ad hoc network, an intranet, the Internet, a fiberoptic-based network, a cloud computing network, or the like, and/or acombination of these or other types of networks.

The number and arrangement of devices and networks shown in FIG. 2 areprovided as an example. In practice, there may be additional devicesand/or networks, fewer devices and/or networks, different devices and/ornetworks, or differently arranged devices and/or networks than thoseshown in FIG. 2 . Furthermore, two or more devices shown in FIG. 2 maybe implemented within a single device, or a single device shown in FIG.2 may be implemented as multiple, distributed devices. Additionally, oralternatively, a set of devices (e.g., one or more devices) of theenvironment 200 may perform one or more functions described as beingperformed by another set of devices of the environment 200.

FIG. 3 is a diagram of example components of one or more devices of FIG.2 . The example components may be included in a device 300, which maycorrespond to the endpoint device 210, the network device 220, and/orthe network management system 230. In some implementations, the endpointdevice 210, the network device 220, and/or the network management system230 may include one or more devices 300 and/or one or more components ofthe device 300. As shown in FIG. 3 , device 300 may include a bus 310, aprocessor 320, a memory 330, an input component 340, an output component350, and a communication component 360.

The bus 310 includes one or more components that enable wired and/orwireless communication among the components of the device 300. The bus310 may couple together two or more components of FIG. 3 , such as viaoperative coupling, communicative coupling, electronic coupling, and/orelectric coupling. The processor 320 includes a central processing unit,a graphics processing unit, a microprocessor, a controller, amicrocontroller, a digital signal processor, a field-programmable gatearray, an application-specific integrated circuit, and/or another typeof processing component. The processor 320 is implemented in hardware,firmware, or a combination of hardware and software. In someimplementations, the processor 320 includes one or more processorscapable of being programmed to perform one or more operations orprocesses described elsewhere herein.

The memory 330 includes volatile and/or nonvolatile memory. For example,the memory 330 may include random access memory (RAM), read only memory(ROM), a hard disk drive, and/or another type of memory (e.g., a flashmemory, a magnetic memory, and/or an optical memory). The memory 330 mayinclude internal memory (e.g., RAM, ROM, or a hard disk drive) and/orremovable memory (e.g., removable via a universal serial busconnection). The memory 330 may be a non-transitory computer-readablemedium. The memory 330 stores information, instructions, and/or software(e.g., one or more software applications) related to the operation ofthe device 300. In some implementations, the memory 330 includes one ormore memories that are coupled to one or more processors (e.g., theprocessor 320), such as via the bus 310.

The input component 340 enables the device 300 to receive input, such asuser input and/or sensed input. For example, the input component 340 mayinclude a touch screen, a keyboard, a keypad, a mouse, a button, amicrophone, a switch, a sensor, a global positioning system sensor, anaccelerometer, a gyroscope, and/or an actuator. The output component 350enables the device 300 to provide output, such as via a display, aspeaker, and/or a light-emitting diode. The communication component 360enables the device 300 to communicate with other devices via a wiredconnection and/or a wireless connection. For example, the communicationcomponent 360 may include a receiver, a transmitter, a transceiver, amodem, a network interface card, and/or an antenna.

The device 300 may perform one or more operations or processes describedherein. For example, a non-transitory computer-readable medium (e.g.,the memory 330) may store a set of instructions (e.g., one or moreinstructions or code) for execution by the processor 320. The processor320 may execute the set of instructions to perform one or moreoperations or processes described herein. In some implementations,execution of the set of instructions, by one or more processors 320,causes the one or more processors 320 and/or the device 300 to performone or more operations or processes described herein. In someimplementations, hardwired circuitry may be used instead of or incombination with the instructions to perform one or more operations orprocesses described herein. Additionally, or alternatively, theprocessor 320 may be configured to perform one or more operations orprocesses described herein. Thus, implementations described herein arenot limited to any specific combination of hardware circuitry andsoftware.

The number and arrangement of components shown in FIG. 3 are provided asan example. The device 300 may include additional components, fewercomponents, different components, or differently arranged componentsthan those shown in FIG. 3 . Additionally, or alternatively, a set ofcomponents (e.g., one or more components) of the device 300 may performone or more functions described as being performed by another set ofcomponents of the device 300.

FIG. 4 is a diagram of example components of one or more devices of FIG.2 . The example components may be included in a device 400. The device400 may correspond to the network device 230. In some implementations,the network device 230 may include one or more devices 400 and/or one ormore components of the device 400. As shown in FIG. 4 , the device 400may include one or more input components 410-1 through 410-B (B≥1)(hereinafter referred to collectively as input components 410, andindividually as input component 410), a switching component 420, one ormore output components 430-1 through 430-C(C≥1) (hereinafter referred tocollectively as output components 430, and individually as outputcomponent 430), and a controller 440.

The input component 410 may be one or more points of attachment forphysical links and may be one or more points of entry for incomingtraffic, such as packets. The input component 410 may process incomingtraffic, such as by performing data link layer encapsulation ordecapsulation. In some implementations, the input component 410 maytransmit and/or receive packets. In some implementations, the inputcomponent 410 may include an input line card that includes one or morepacket processing components (e.g., in the form of integrated circuits),such as one or more interface cards (IFCs), packet forwardingcomponents, line card controller components, input ports, processors,memories, and/or input queues. In some implementations, the device 400may include one or more input components 410.

The switching component 420 may interconnect the input components 410with the output components 430. In some implementations, the switchingcomponent 420 may be implemented via one or more crossbars, via busses,and/or with shared memories. The shared memories may act as temporarybuffers to store packets from the input components 410 before thepackets are eventually scheduled for delivery to the output components430. In some implementations, the switching component 420 may enable theinput components 410, the output components 430, and/or the controller440 to communicate with one another.

The output component 430 may store packets and may schedule packets fortransmission on output physical links. The output component 430 maysupport data link layer encapsulation or decapsulation, and/or a varietyof higher-level protocols. In some implementations, the output component430 may transmit packets and/or receive packets. In someimplementations, the output component 430 may include an output linecard that includes one or more packet processing components (e.g., inthe form of integrated circuits), such as one or more IFCs, packetforwarding components, line card controller components, output ports,processors, memories, and/or output queues. In some implementations, thedevice 400 may include one or more output components 430. In someimplementations, the input component 410 and the output component 430may be implemented by the same set of components (e.g., and input/outputcomponent may be a combination of the input component 410 and the outputcomponent 430).

The controller 440 includes a processor in the form of, for example, aCPU, a GPU, an APU, a microprocessor, a microcontroller, a DSP, an FPGA,an ASIC, and/or another type of processor. The processor is implementedin hardware, firmware, or a combination of hardware and software. Insome implementations, the controller 440 may include one or moreprocessors that can be programmed to perform a function.

In some implementations, the controller 440 may include a RAM, a ROM,and/or another type of dynamic or static storage device (e.g., a flashmemory, a magnetic memory, an optical memory, etc.) that storesinformation and/or instructions for use by the controller 440.

In some implementations, the controller 440 may communicate with otherdevices, networks, and/or systems connected to the device 400 toexchange information regarding network topology. The controller 440 maycreate routing tables based on the network topology information, maycreate forwarding tables based on the routing tables, and may forwardthe forwarding tables to the input components 410 and/or outputcomponents 430. The input components 410 and/or the output components430 may use the forwarding tables to perform route lookups for incomingand/or outgoing packets.

The controller 440 may perform one or more processes described herein.The controller 440 may perform these processes in response to executingsoftware instructions stored by a non-transitory computer-readablemedium. A computer-readable medium is defined herein as a non-transitorymemory device. A memory device includes memory space within a singlephysical storage device or memory space spread across multiple physicalstorage devices.

Software instructions may be read into a memory and/or storage componentassociated with the controller 440 from another computer-readable mediumor from another device via a communication interface. When executed,software instructions stored in a memory and/or storage componentassociated with the controller 440 may cause the controller 440 toperform one or more processes described herein. Additionally, oralternatively, hardwired circuitry may be used in place of or incombination with software instructions to perform one or more processesdescribed herein. Thus, implementations described herein are not limitedto any specific combination of hardware circuitry and software.

The number and arrangement of components shown in FIG. 4 are provided asan example. In practice, the device 400 may include additionalcomponents, fewer components, different components, or differentlyarranged components than those shown in FIG. 4 . Additionally, oralternatively, a set of components (e.g., one or more components) of thedevice 400 may perform one or more functions described as beingperformed by another set of components of the device 400.

FIG. 5 is a flowchart of an example process 500 for providing time-basedsynchronized activation of configuration updates in network devices. Insome implementations, one or more process blocks of FIG. 5 may beperformed by a device (e.g., the network device 220). In someimplementations, one or more process blocks of FIG. 5 may be performedby another device or a group of devices separate from or including thedevice, such as an endpoint device (e.g., the endpoint device 210)and/or a network management system (e.g., the network management system230). Additionally, or alternatively, one or more process blocks of FIG.5 may be performed by one or more components of the device 300, such asthe processor 320, the memory 330, the input component 340, the outputcomponent 350, and/or the communication component 360. Additionally, oralternatively, one or more process blocks of FIG. 5 may be performed byone or more components of the device 400, such as the input component410, the switching component 420, the output component 430, and/or thecontroller 440.

As shown in FIG. 5 , process 500 may include receiving configurationinformation with a first command and a second command (block 510). Forexample, the network device may receive configuration information with afirst command and a second command, as described above. In someimplementations, the first command and the second command are combinedinto a single command. In some implementations, the second commandincludes executable instructions for performing the one or more actions.In some implementations, the first command, the second command, andinstructions for performing the one or more actions are combined into asingle command. In some implementations, the configuration informationincludes a configuration application executable by the network device.

As further shown in FIG. 5 , process 500 may include generating a datastructure based on the first command (block 520). For example, thenetwork device may generate a data structure based on the first command,as described above.

As further shown in FIG. 5 , process 500 may include storing files ofthe configuration information in the data structure based on the firstcommand (block 530). For example, the network device may store files ofthe configuration information in the data structure based on the firstcommand, as described above.

As further shown in FIG. 5 , process 500 may include activating thefiles stored in the data structure, to configure the network device,based on a timestamp or a time period specified in the second command(block 540). For example, the network device may activate the filesstored in the data structure, to configure the network device, based ona timestamp or a time period specified in the second command, asdescribed above. In some implementations, the timestamp includes a dateand a time when the files are to be activated. In some implementations,the time period includes a period of time, in minutes, hours, or days,that is to elapse before the files are to be activated.

Process 500 may include additional implementations, such as any singleimplementation or any combination of implementations described belowand/or in connection with one or more other processes describedelsewhere herein.

In some implementations, process 500 includes determining whether one ormore errors occur based on generating the data structure and storing thefiles in the data structure, and causing the one or more errors to becorrected when the one or more errors occur.

In some implementations, process 500 includes performing one or moreactions, based on the second command, after activating the files storedin the data structure. In some implementations, performing the one ormore actions comprises one or more of providing, to a networkadministrator associated with the network device, an email indicatingthat the files are activated, providing, to the network administrator, atext message indicating that the files are activated, or providing, tothe network administrator, a voice message indicating that the files areactivated. In some implementations, the second command includesexecutable instructions for performing the one or more actions.

In some implementations, process 500 includes determining whether one ormore errors are present in the configuration information, and refrainingfrom generating the data structure and storing the files in the datastructure when the one or more errors are present in the configurationinformation. In some implementations, process 500 includes providing, toa network administrator associated with the network device, a messageidentifying the one or more errors when the one or more errors arepresent in the configuration information.

Although FIG. 5 shows example blocks of process 500, in someimplementations, process 500 may include additional blocks, fewerblocks, different blocks, or differently arranged blocks than thosedepicted in FIG. 5 . Additionally, or alternatively, two or more of theblocks of process 500 may be performed in parallel.

The foregoing disclosure provides illustration and description but isnot intended to be exhaustive or to limit the implementations to theprecise form disclosed. Modifications may be made in light of the abovedisclosure or may be acquired from practice of the implementations.

As used herein, the term “component” is intended to be broadly construedas hardware, firmware, or a combination of hardware and software. Itwill be apparent that systems and/or methods described herein may beimplemented in different forms of hardware, firmware, and/or acombination of hardware and software. The actual specialized controlhardware or software code used to implement these systems and/or methodsis not limiting of the implementations. Thus, the operation and behaviorof the systems and/or methods are described herein without reference tospecific software code—it being understood that software and hardwarecan be used to implement the systems and/or methods based on thedescription herein.

Although particular combinations of features are recited in the claimsand/or disclosed in the specification, these combinations are notintended to limit the disclosure of various implementations. In fact,many of these features may be combined in ways not specifically recitedin the claims and/or disclosed in the specification. Although eachdependent claim listed below may directly depend on only one claim, thedisclosure of various implementations includes each dependent claim incombination with every other claim in the claim set.

No element, act, or instruction used herein should be construed ascritical or essential unless explicitly described as such. Also, as usedherein, the articles “a” and “an” are intended to include one or moreitems and may be used interchangeably with “one or more.” Further, asused herein, the article “the” is intended to include one or more itemsreferenced in connection with the article “the” and may be usedinterchangeably with “the one or more.” Furthermore, as used herein, theterm “set” is intended to include one or more items (e.g., relateditems, unrelated items, a combination of related and unrelated items,and/or the like), and may be used interchangeably with “one or more.”Where only one item is intended, the phrase “only one” or similarlanguage is used. Also, as used herein, the terms “has,” “have,”“having,” or the like are intended to be open-ended terms. Further, thephrase “based on” is intended to mean “based, at least in part, on”unless explicitly stated otherwise. Also, as used herein, the term “or”is intended to be inclusive when used in a series and may be usedinterchangeably with “and/or,” unless explicitly stated otherwise (e.g.,if used in combination with “either” or “only one of”).

In the preceding specification, various example embodiments have beendescribed with reference to the accompanying drawings. It will, however,be evident that various modifications and changes may be made thereto,and additional embodiments may be implemented, without departing fromthe broader scope of the invention as set forth in the claims thatfollow. The specification and drawings are accordingly to be regarded inan illustrative rather than restrictive sense.

1. A method, comprising: receiving, by a network device, configurationinformation with a first command and a second command, wherein theconfiguration information includes an application; wherein a timestampor a time period is specified in the second command, wherein thetimestamp or the time period indicates when to activate the application;generating, by the network device, a data structure based on the firstcommand; storing, by the network device, files of the configurationinformation in the data structure based on the first command; andactivating, by the network device, the files stored in the datastructure, to configure the network device to have the files become anoperational device configuration for the network device, based ontimestamp or time period specified in the second command.
 2. The methodof claim 1, further comprising: determining whether one or more errorsoccur based on generating the data structure and storing the files inthe data structure; and causing the one or more errors to be correctedwhen the one or more errors occur.
 3. The method of claim 1, furthercomprising: performing one or more actions, based on the second command,after activating the files stored in the data structure.
 4. The methodof claim 3, wherein performing the one or more actions comprises one ormore of: providing, to a network administrator associated with thenetwork device, an email indicating that the files are activated;providing, to the network administrator, a text message indicating thatthe files are activated; or providing, to the network administrator, avoice message indicating that the files are activated.
 5. The method ofclaim 3, wherein the second command includes executable instructions forperforming the one or more actions.
 6. The method of claim 1, whereinthe timestamp includes a date and a time when the files are to beactivated.
 7. The method of claim 1, wherein the time period includes aperiod of time, in minutes, hours, or days, that is to elapse before thefiles are to be activated.
 8. A network device, comprising: one or morememories; and one or more processors to: receive configurationinformation with a first command and a second command, wherein theconfiguration information includes an application, wherein a timestampor a time period is specified in the second command,  wherein thetimestamp or the time period indicates when the network provides atime-based synchronized activation of configuration updates, wherein thefirst command is related to a prepare stage of the configuration updateof the network device, and wherein the second command is related to anactivate stage of the configuration update the network device; generatea data structure based on the first command; store files for theconfiguration update of the network device in the data structure basedon the first command; activate the files stored in the data structure tohave the files become an operational device configuration for thenetwork device based on the timestamp or the time period specified inthe second command; and perform one or more actions, based on the secondcommand, after activating the files stored in the data structure.
 9. Thenetwork device of claim 8, wherein the first command and the secondcommand are combined into a single command.
 10. The network device ofclaim 8, wherein the second command includes executable instructions forperforming the one or more actions.
 11. The network device of claim 8,wherein the first command, the second command, and instructions forperforming the one or more actions are combined into a single command.12. The network device of claim 8, wherein the configuration informationincludes a configuration application executable by the network device.13. The network device of claim 8, wherein the one or more processorsare further to: determine whether one or more errors are present in theconfiguration information; and refrain from generating the datastructure and storing the files in the data structure when the one ormore errors are present in the configuration information.
 14. Thenetwork device of claim 13, wherein the one or more processors arefurther to: provide, to a network administrator associated with thenetwork device, a message identifying the one or more errors when theone or more errors are present in the configuration information.
 15. Anon-transitory computer-readable medium storing a set of instructions,the set of instructions comprising: one or more instructions that, whenexecuted by one or more processors of a network device, cause thenetwork device to: receive an application with a first command and asecond command, wherein a timestamp or a time period is specified in thesecond command, wherein the timestamp or the time period indicates whenthe network device provides a time-based synchronized activation ofconfiguration updates; determine whether one or more errors are presentin the application; provide, to a network administrator associated withthe network device, a message identifying the one or more errors whenthe one or more errors are present in the application; generate files ofthe application; store the files in a data structure based on the firstcommand and when the one or more errors are not present in theapplication; and activate the files stored in the data structure to havethe files become an operational device configuration for the networkbased on the timestamp or the time period specified in the secondcommand.
 16. The non-transitory computer-readable medium of claim 15,wherein the one or more instructions further cause the network deviceto: perform one or more actions, based on the second command, afteractivating the files stored in the data structure.
 17. Thenon-transitory computer-readable medium of claim 16, wherein the one ormore instructions, that cause the network device to perform the one ormore actions, cause the network device to one or more of: reboot thenetwork device to enable a configuration update; inform a networkmanagement system that the configuration update succeeded or failed; orinform another network device that the network device has performed theconfiguration update or will go offline to reboot.
 18. Thenon-transitory computer-readable medium of claim 15, wherein the secondcommand includes instructions for performing one or more actions. 19.The non-transitory computer-readable medium of claim 15, wherein thetimestamp includes a date and/or a time when the files are to beactivated, wherein the time period includes a period of time, inminutes, hours, or days, that is to elapse before the files are to beactivated.
 20. The non-transitory computer-readable medium of claim 15,wherein the first command and the second command are combined into asingle command.